package com.atguigu.mybatis.test;

import com.atguigu.mybatis.entity.Employee;
import com.atguigu.mybatis.mapper.EmployeeMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.jupiter.api.Test;

import java.io.IOException;
import java.io.InputStream;

public class DemoTest01 {

    @Test
    public void testHelloWorld() throws IOException {
        // 1、创建一个字符串对象，里面 Mybatis 全局配置文件的路径
        // 这个路径是以类路径根目录为基准的路径，因为 mybatis-config.xml 文件本身就在根目录下，所以直接写文件名
        String configPath = "mybatis-config.xml";

        // 2、通过 Mybatis 提供的专门工具类，加载配置文件
        InputStream inputStream = Resources.getResourceAsStream(configPath);

        // 3、创建 SqlSessionFactoryBuilder 对象
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();

        // 4、调用 SqlSessionFactoryBuilder 对象的 build 方法，创建 SqlSessionFactory 对象
        SqlSessionFactory sessionFactory = builder.build(inputStream);

        // 5、通过 SqlSessionFactory 对象创建 SqlSession 对象
        SqlSession sqlSession = sessionFactory.openSession();

        // 6、通过 SqlSession 对象获取 Mapper 接口对象
        EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);

        // 7、调用 Mapper 接口对象的方法，执行查询操作
        Employee employee = employeeMapper.selectEmployee(2);
        System.out.println("employee = " + employee);

        // 8、提交事务
        sqlSession.commit();

        // 9、关闭 SqlSession 对象
        sqlSession.close();
    }

}
